<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 迭代器是一种接口,为各种不同的数据类型提供统一的访问机制
        // 任何数据结构只要部署iterator接口,就可以完成遍历操作    iterator接口就是对象里面的一个属性
        // 实现自定义遍历数组

        const xiyou = ['唐僧','孙悟空','猪八戒','沙僧'];
        // for...Of遍历数组
        for(let i of xiyou){
            // 打印出来的是键值,而for...in里面保存的是键名
            console.log(i);
        }

        // 为什么数组可以用for...Of遍历
        // 相当于做了以下的步骤
        let iterator = xiyou[Symbol.iterator]();
        // 然后不断调用对象的next方法
        console.log(iterator.next());
        console.log(iterator.next());
        console.log(iterator.next());
        console.log(iterator.next());
        console.log(iterator.next());


    </script>
</body>
</html>